home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 7 / BBS in a Box - Macintosh - Volume VII (BBS in a Box) (January 1993).iso / Files / Prog / M / LSC XCMD 2.0.cpt / TestTwo.c < prev   
C/C++ Source or Header  |  1990-10-19  |  4KB  |  144 lines

  1. /*    Trivial XCMD to test out HyperXCmd_LSC.h
  2.  
  3.     Nigel Perry (np@doc,ic.ac.uk), October 1990
  4. */
  5.  
  6. #include "HyperXCmd_LSC.h"
  7.  
  8. /* from LSC 2.01 supplement */
  9. #define SetUpA4()        asm \
  10.                             {  move.l    a4,-(sp) \
  11.                                move.l    a0,a4 \
  12.                             }
  13. #define RestoreA4()    asm { move.l (sp)+,a4 }
  14.  
  15. #define NIL (void *)0
  16. #define EMPTY ((StringPtr)0xA02)    /* low memory global OneOne */
  17.                                     /* used for "\p" */
  18. #define cEMPTY ((char *)0xA02)        /* low memory global OneOne */
  19.                                     /* used for "" */
  20.  
  21. pascal void main(paramPtr) register XCmdPtr paramPtr;
  22. {    Point pt;
  23.     Rect rect;
  24.     Str255 ans;
  25.     StringPtr inp;
  26.     WindowPtr wp;
  27.     XWEventInfoPtr xp;
  28.     GrafPtr    gp;
  29.  
  30.     SetUpA4();
  31.     
  32.     if(paramPtr->paramCount == -1)
  33.     {    xp = (XWEventInfoPtr)(paramPtr->params[0]);
  34.         wp = xp->eventWindow;
  35.         switch(xp->event.what)
  36.         {    case updateEvt:
  37.                 BeginUpdate(wp);
  38.                 EndUpdate(wp);
  39.                 break;
  40.             case xCursorWithin:
  41.                 InitCursor();
  42.                 break;
  43.             case xHidePalettesEvt:
  44.                 ShowHide(wp, false);
  45.                 break;
  46.             case xShowPalettesEvt:
  47.                 ShowHide(wp, true);
  48.                 break;
  49.             case mouseDown:
  50.                 switch( FindWindow(xp->event.where, &wp) )
  51.                 {    case inContent:
  52.                         /* jump windoid to mouse click! */
  53.                         MoveWindow(wp, xp->event.where.h, xp->event.where.v, false);
  54.                         break;
  55.                     case inGoAway:
  56.                         if( TrackGoAway(wp, xp->event.where) )
  57.                             CloseXWindow(paramPtr, wp);
  58.                         break;
  59.                     case inDrag:
  60.                         /* have some fun… */
  61.                         rect = wp->portRect;
  62.                         GetPort(&gp);
  63.                         SetPort(wp);
  64.                         LocalToGlobal(&rect.top);
  65.                         LocalToGlobal(&rect.bottom);
  66.                         SetPort(gp);
  67.                         InsetRect(&rect, -72, -72);
  68.                         DragWindow(wp, xp->event.where, &rect);
  69.                         break;
  70.                     default:
  71.                         paramPtr->passFlag = true;
  72.                 }
  73.                 break;
  74.             default:
  75.                 paramPtr->passFlag = true;
  76.                 break;
  77.         }
  78.                 
  79.         if(paramPtr->passFlag)
  80.         {    NumToStr(paramPtr, xp->event.what, ans);
  81.             ParamText(ans, EMPTY, EMPTY, EMPTY);
  82.             ShowHCAlert(paramPtr, errorDlgID, "\pEvent: ^0");
  83.         }
  84.     }
  85.     else
  86.     {    switch( ShowHCAlert(paramPtr, yesNoCancelDlgID, "\pFlash Palettes?") )
  87.         {    case 1:
  88.                 HideHCPalettes(paramPtr);
  89.                 ShowHCPalettes(paramPtr);
  90.                 HideHCPalettes(paramPtr);
  91.                 ShowHCPalettes(paramPtr);
  92.                 break;
  93.             case 2:
  94.                 SendHCMessage(paramPtr, "\pput Cancelled");
  95.                 break;
  96.             case 3:
  97.                 BeginXSound(paramPtr, NIL);
  98.                 SysBeep(1);
  99.                 SendHCMessage(paramPtr, "\pput \"Spoil\"");
  100.                 SysBeep(1);
  101.                 SendHCMessage(paramPtr, "\pput \" Sport!\" after msg");
  102.                 SysBeep(1);
  103.                 EndXSound(paramPtr);
  104.                 break;
  105.             default:
  106.                 SendHCMessage(paramPtr, "\pput \"Unexpected return value.\"");
  107.                 break;
  108.         }
  109.         
  110.         /* test new conversions */
  111.         inp = (StringPtr)"\p1,2,3,4";
  112.         StrToRect(paramPtr, inp, &rect);
  113.         RectToStr(paramPtr, &rect, ans);
  114.         ParamText(inp, ans, StringEqual(paramPtr, inp, ans) ? EMPTY : (StringPtr)"\pNot ", EMPTY);
  115.         ShowHCAlert(paramPtr, errorDlgID, "\pInput: ^0 Output: ^1 Result: ^2Equal");
  116.         
  117.         inp = (StringPtr)"\p7,8";
  118.         StrToPoint(paramPtr, inp, &pt);
  119.         PointToStr(paramPtr, &pt, ans);
  120.         ParamText(inp, ans, StringEqual(paramPtr, inp, ans) ? EMPTY : (StringPtr)"\pNot ", EMPTY);
  121.         ShowHCAlert(paramPtr, errorDlgID, "\pInput: ^0 Output: ^1 Result: ^2Equal");
  122.         
  123.         inp = (StringPtr)"\p30, 30, 100, 0100";
  124.         StrToRect(paramPtr, inp, &rect);
  125.         RectToStr(paramPtr, &rect, ans);
  126.         ParamText(inp, ans, StringEqual(paramPtr, inp, ans) ? EMPTY : (StringPtr)"\pNot ", EMPTY);
  127.         ShowHCAlert(paramPtr, errorDlgID, "\pInput: ^0 Output: ^1 Result: ^2Equal");
  128.         
  129.         inp = (StringPtr)"\p 7, 008 ";
  130.         StrToPoint(paramPtr, inp, &pt);
  131.         PointToStr(paramPtr, &pt, ans);
  132.         ParamText(inp, ans, StringEqual(paramPtr, inp, ans) ? EMPTY : (StringPtr)"\pNot ", EMPTY);
  133.         ShowHCAlert(paramPtr, errorDlgID, "\pInput: ^0 Output: ^1 Result: ^2Equal");
  134.         
  135.         /* now lets try for a windoid */
  136.         
  137.         wp = NewXWindow(paramPtr, &rect, "\pA Windoid", true, palNoGrowProc, false, true);
  138.         NumToHex(paramPtr, (long)wp, 6, ans);
  139.         ParamText(ans, EMPTY, EMPTY, EMPTY);
  140.         ShowHCAlert(paramPtr, errorDlgID, "\pWindow Ptr = 0x^0");
  141.     }
  142.     
  143.     RestoreA4();
  144. }